//Object的所有用法：1. clone()
//
//保护方法，实现对象的浅复制，只有实现了Cloneable接口才可以调用该方法，否则抛出CloneNotSupportedException异常。
//
//2. getClass()
//
//final方法，返回Class类型的对象，反射来获取对象。
//
//3. toString()
//
//该方法用得比较多，一般子类都有覆盖，来获取对象的信息。
//
//4. finalize()
//
//该方法用于释放资源。因为无法确定该方法什么时候被调用，很少使用。
//
//5. equals()
//
//比较对象的内容是否相等
//
//6. hashCode()
//
//该方法用于哈希查找，重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。
//
//7. wait()
//
//wait方法就是使当前线程等待该对象的锁，当前线程必须是该对象的拥有者，也就是具有该对象的锁。wait()方法一直等待，直到获得锁或者被中断。wait(long timeout)设定一个超时间隔，如果在规定时间内没有获得锁就返回。
//
//调用该方法后当前线程进入睡眠状态，直到以下事件发生。
//
//其他线程调用了该对象的notify方法。
//其他线程调用了该对象的notifyAll方法。
//其他线程调用了interrupt中断该线程。
//时间间隔到了。
//此时该线程就可以被调度了，如果是被中断的话就抛出一个InterruptedException异常。
//
//8. notify()
//
//该方法唤醒在该对象上等待的某个线程。
//
//9. notifyAll()
//
//该方法唤醒在该对象上等待的所有线程。



//****************************************************************************************
//****************************************************************************************



//JAVA中protected的作用:类NewObject中有protected修饰的方法或者属性
// 同一个包中：
//
//可在同一个包里的子类中实例化NewObject类获得对象，然后可用该对象访问protected修饰的方法或者属性，即.操作访问。
//可在同一个包里的非子类中实例化NewObject类获得对象，然后可用该对象访问protected修饰的方法或者属性。
//可在同一个包里的非子类中实例化NewObject类的子类（该子类和NewObject类在同一个包中）获得对象，然后可用该对象访问protected修饰的方法或者属性。
//可在同一个包里的NewObject类的子类中调用NewObject类中protected修饰的方法或者属性，即protected修饰的方法和属性可被同一个包中的子类继承。



// 非同一个包中：
//
//可在非同一个包里的子类中实例化NewObject类获得对象，但无法用该对象问protected修饰的方法或者属性。
//可在非同一个包里的非子类中实例化NewObject类获得对象，但无法用该对象问protected修饰的方法或者属性。
//可在非同一个包里的非子类中实例化NewObject类的子类（该子类和NewObject类不在同一个包中）获得对象，但无法用该对象问protected修饰的方法或者属性。
//可在非同一个包里的NewObject类的子类中调用NewObject类中protected修饰的方法或者属性，即protected修饰的方法和属性可被不同一个包中的子类继承。

//=======================================================================================
//instanceof 运算符作用
//用来在运行时指出对象是否是特定类的一个实例。
//instance of通过返回一个布尔值来指出，这个对象是否是这个特定类或它的子类的一个实例。instanceof是Java的一个二元操作符，和==，>，<是同一类东东。由于它是由字母组成的，所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例，返回boolean类型的数据。
//一、在有继承关系的类中我们可以通过多态来调用不同实例中的不同方法
//二、在没有继承关系的类中，我们可以通过instanceof来判断当前实例，然后很据不同实例调用不同方法
//一般在使用无泛型的集合（List、set等）时，比较多的使用  instanceof  ，由于集合能够存各种对象，所以在读取时一般要进行相应的判断。